package com.example.shutdown_v1.constants;

import java.util.Map;

/**
 * 电力设备协议常量
 */
public final class PowerDeviceConstants {
    
    /**
     * 查询各路电路状态的指令（1～18路）
     */
    public static final Map<Integer, String> QUERY_COMMANDS = Map.ofEntries(
        Map.entry(1, "01 04 00 00 00 01 31 CA"),  // 1路查询指令
        Map.entry(2, "01 04 00 01 00 01 60 0A"),  // 2路查询指令
        Map.entry(3, "01 04 00 02 00 01 90 0A"),  // 3路查询指令
        Map.entry(4, "01 04 00 03 00 01 C1 CA"),  // 4路查询指令
        Map.entry(5, "01 04 00 04 00 01 70 0B"),  // 5路查询指令
        Map.entry(6, "01 04 00 05 00 01 21 CB"),  // 6路查询指令
        Map.entry(7, "01 04 00 06 00 01 D1 CB"),  // 7路查询指令
        Map.entry(8, "01 04 00 07 00 01 80 0B"),  // 8路查询指令
        Map.entry(9, "01 04 00 08 00 01 B0 08"),  // 9路查询指令
        Map.entry(10, "01 04 00 09 00 01 E1 C8"), // 10路查询指令
        Map.entry(11, "01 04 00 0A 00 01 11 C8"), // 11路查询指令
        Map.entry(12, "01 04 00 0B 00 01 40 08"), // 12路查询指令
        Map.entry(13, "01 04 00 0C 00 01 F1 C9"), // 13路查询指令
        Map.entry(14, "01 04 00 0D 00 01 A0 09"), // 14路查询指令
        Map.entry(15, "01 04 00 0E 00 01 50 09"), // 15路查询指令
        Map.entry(16, "01 04 00 0F 00 01 01 C9"), // 16路查询指令
        Map.entry(17, "01 04 00 10 00 01 30 0F"), // 17路查询指令
        Map.entry(18, "01 04 00 11 00 01 61 CF")  // 18路查询指令
    );
    
    /**
     * 电力状态响应常量
     */
    public static final String POWER_ON_RESPONSE = "01 04 02 00 01 78 F0";   // 有电(触发状态)
    public static final String POWER_OFF_RESPONSE = "01 04 02 00 00 B9 30";  // 断电(未触发状态)
    
    /**
     * 最大支持路数
     */
    public static final int MAX_CHANNELS = 18;
    
    /**
     * MQTT主题配置
     */
    public static final class Topics {
        // 当前单套设备主题
        public static final String CURRENT_COMMAND_TOPIC = "/mallpower/get";   // 发送指令到get
        public static final String CURRENT_RESPONSE_TOPIC = "/mallpower/post"; // 接收响应从post
        
        // 将来多商家部署主题格式
        // public static final String FUTURE_COMMAND_TOPIC_FORMAT = "/mallpower/get/%s";     // %s = 商家ID
        // public static final String FUTURE_RESPONSE_TOPIC_PATTERN = "/mallpower/post/#";  // 订阅所有商家响应
    }
    
    /**
     * Redis键前缀
     */
    public static final class RedisKeys {
        public static final String POWER_QUERY_PREFIX = "power_query:";         // 查询状态记录
        public static final String POWER_RESPONSE_PREFIX = "power_response:";   // 响应状态记录
        public static final String MERCHANT_STATUS_PREFIX = "merchant_power_status:"; // 商家整体状态
    }
    
    /**
     * 查询超时配置(毫秒)
     */
    public static final long QUERY_TIMEOUT_MS = 5000L;    // 单路查询超时时间（增加到5秒）
    public static final long COMMAND_INTERVAL_MS = 2000L; // 指令间隔时间（增加到2秒，避免设备死机）
    
    private PowerDeviceConstants() {
        // 防止实例化
    }
}
